﻿// ***********************************************************************
// Assembly         : Delta_entidad
// Author           : Juan Alberto Cerino Gomez
// Created          : 02-23-2013
//
// Last Modified By : Juan Alberto Cerino Gomez
// Last Modified On : 06-03-2013
// ***********************************************************************
// <copyright file="Cat_editor.cs" company="Delta Bussines">
//     Copyright (c) 2013  Delta Bussines. All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Delta_util.Estaticos;
using Delta_entidad.Atributos;

namespace Delta_entidad.EntidadesControl
{
    /// <summary>
    /// Entidad que representa la configuración del tipo de editor que se usa para mostrar en el panel de edición, asi como tambien el tipo de columna que se quiere mostrar en el GridView.
    /// </summary>
    [Serializable]
    [AttEntidad("DG_Cat_editor", "id_editor", false, 0, true, true, Enumerados.TIPO_OPERACION_GRID.INSERTAR, Enumerados.TIPO_OPERACION_GRID.ACTUALIZAR, Enumerados.TIPO_OPERACION_GRID.ELIMINAR)]
    public class Cat_editor : Base.TipoBase, Base.ITipo
    {

        /// <summary>
        /// Constructor de la clase.
        /// </summary>
        public Cat_editor()
        {
            base.EsEntidadControl = true;
        }

        /// <summary>
        /// Variable que contiene la clave del tipo de editor.
        /// </summary>
        private int _id_editor;
        /// <summary>
        /// Variable que contiene el nombre del tipo de editor.
        /// </summary>
        private string _nombre;
        /// <summary>
        /// Variable que contiene el nombre completo del tipo de editor.
        /// </summary>
        private string _editor;
        /// <summary>
        /// Variable que contiene el nombre de la propiedad que contiene el valor del editor.
        /// </summary>
        private string _propiedad_valor;
        /// <summary>
        /// Variable que contiene el nombre completo del ensamblado o DLL el cual contiene el tipo de editor.
        /// </summary>
        private string _ensamblado;
        /// <summary>
        /// Variable que contiene el nombre completo del tipo de columna a mostrar en el GridView para este tipo de editor.
        /// </summary>
        private string _grid_editor;
        /// <summary>
        /// Variable que contiene el nombre del ensamblado que contiene el tipo de columna a mostrar en el GridView.
        /// </summary>
        private string _grid_ensamblado;
        /// <summary>
        /// Variable que contiene el formato que se asinga a la columna en el GridView.
        /// </summary>
        private string _grid_formato;
        /// <summary>
        /// Variable que guarda los valores de las propiedades del control web.
        /// </summary>
        private string _valores_propiedades;

        /// <summary>
        /// Obtiene o establece el valor de la clave del tipo de editor.
        /// </summary>
        /// <value>Clave del tipo de editor.</value>
        [AttrParametro(System.Data.SqlDbType.SmallInt, 4, null, System.Data.ParameterDirection.InputOutput, Enumerados.TIPO_QUERY.INSERTAR, Enumerados.TIPO_QUERY.ELIMINAR, Enumerados.TIPO_QUERY.OBTENER, Enumerados.TIPO_QUERY.OBTENER_TODOS)]
        [AttPropiedad("Clave", true, false, false, false, Enumerados.TIPO_EDITOR.TEXBOX, null, 1)]
        public int id_editor
        {
            get { return _id_editor; }
            set { _id_editor = value; }
        }
        /// <summary>
        /// Obtiene o establece el nombre del tipo de editor.
        /// </summary>
        /// <value>Nombre del tipo de editor.</value>
        [AttrParametro(System.Data.SqlDbType.VarChar, 100, null, System.Data.ParameterDirection.Input, Enumerados.TIPO_QUERY.INSERTAR)]
        [AttPropiedad("Nombre", true, false, false, true, Enumerados.TIPO_EDITOR.TEXBOX, null, 2)]
        public string nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }
        /// <summary>
        /// Obtiene o establece el valor del nombre completo de la DLL que contiene el control a usar como editor del campo
        /// </summary>
        /// <value>Nombre completo del ensamblado o DLL.</value>
        [AttrParametro(System.Data.SqlDbType.VarChar, 100, null, System.Data.ParameterDirection.Input, Enumerados.TIPO_QUERY.INSERTAR)]
        [AttPropiedad("Ensamblado Editor", true, false, false, true, Enumerados.TIPO_EDITOR.TEXBOX, "Dll del editor (Deje en blanco para indicar System.Web)", 3)]
        public string ensamblado
        {
            get { return _ensamblado; }
            set { _ensamblado = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor del nombre completo del tipo  del control que se va a usar como editor del campo.
        /// </summary>
        /// <value>Nombre completo del tipo del editor.</value>
        [AttrParametro(System.Data.SqlDbType.VarChar, 100, null, System.Data.ParameterDirection.Input, Enumerados.TIPO_QUERY.INSERTAR)]
        [AttPropiedad("Control Editor", true, false, false, true, Enumerados.TIPO_EDITOR.TEXBOX, "Nombre completo del tipo del control que quiere mostrarse en el editor (System.Web.UI.WebControls.TextBox)", 4)]
        public string editor
        {
            get { return _editor; }
            set { _editor = value; }
        }

        /// <summary>
        /// Obtiene o establece el nombre de la propiedad que contiene el valor del editor.
        /// </summary>
        /// <value>Nombre de la propiedad.</value>
        [AttrParametro(System.Data.SqlDbType.VarChar, 100, null, System.Data.ParameterDirection.Input, Enumerados.TIPO_QUERY.INSERTAR)]
        [AttPropiedad("Propiedad Valor", true, false, false, true, Enumerados.TIPO_EDITOR.TEXBOX, "Propiedad del control, de la cual se va a tomar y asignar valor, puede indicar propGet|proSet para indicar propiedad get y set diferentes", 5)]
        public string propiedad_valor
        {
            get { return _propiedad_valor; }
            set { _propiedad_valor = value; }
        }
        /// <summary>
        /// Obtiene o establece el nombre del nombre del ensamblado que contiene el tipo de columna a mostrar en el GridView.
        /// </summary>
        /// <value>Nombre del ensamblado.</value>
        [AttrParametro(System.Data.SqlDbType.VarChar, 100, null, System.Data.ParameterDirection.Input, Enumerados.TIPO_QUERY.INSERTAR)]
        [AttPropiedad("Ensamblado del editor grid", true, false, false, true, Enumerados.TIPO_EDITOR.TEXBOX, "Dll donde se encuentra el tipo de columna a mostrar en el grid (Deje en blanco para indicar System.Web)", 6)]
        public string grid_ensamblado
        {
            get { return _grid_ensamblado; }
            set { _grid_ensamblado = value; }
        }

        /// <summary>
        /// Obtiene o establece el nombre del nombre completo del tipo de columna a mostrar en el GridView.
        /// </summary>
        /// <value>Nombre completo del tipo de columna.</value>
        [AttrParametro(System.Data.SqlDbType.VarChar, 100, null, System.Data.ParameterDirection.Input, Enumerados.TIPO_QUERY.INSERTAR)]
        [AttPropiedad("Control editor del grid", true, false, false, true, Enumerados.TIPO_EDITOR.TEXBOX, "Tipo de dato a mostrar en el grid (Deje en blanco para indicar System.Web.UI.Control.BoundField)", 7)]
        public string grid_editor
        {
            get { return _grid_editor; }
            set { _grid_editor = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor del formato que se asinga a la columna en el GridView.
        /// </summary>
        /// <value>Formato de la columna.</value>
        [AttrParametro(System.Data.SqlDbType.VarChar, 100, null, System.Data.ParameterDirection.Input, Enumerados.TIPO_QUERY.INSERTAR)]
        [AttPropiedad("Formato Grid", true, false, false, true, Enumerados.TIPO_EDITOR.TEXBOX, "Formato que se desea aplicar a la columna en el grid,use ~ para separar los formatos, el segundo formato se toma aplica en edición.", 8)]
        public string grid_formato
        {
            get { return _grid_formato; }
            set { _grid_formato = value; }
        }

        /// <summary>
        /// Obtiene o establece el valor que indica los valores por default del control que se va a usar como editor del campo, por ejemplo si es un campo de texto y quiere que cada 
        /// vez que cargue el editor, se muestre el texto "Escriba aqui", se configura de la siguiente forma: "Text|Escriba aqui", se pueden configurar mas de una propiedad 
        /// separando por coma la configuracion: "Text|Escriba aqui,Width:10px".
        /// </summary>
        /// <value>The valores_propiedades.</value>
        [AttrParametro(System.Data.SqlDbType.VarChar, 1000, null, System.Data.ParameterDirection.Input, Enumerados.TIPO_QUERY.INSERTAR)]
        [AttPropiedad("Valores del Control", true, false, false, true, Enumerados.TIPO_EDITOR.TEXTBOX_MULTILINEA, "Especifique los valores de las propiedades del control (Text|123,CssClass|Numero....).<br/>Use * para indicar que se trata de un atributo.<br/>Use $' para indicador una coma(,).<br/>Caracteres maximos 1000.", 9)]
        [AttEditor(null, null, null, null, null, null, "TextMode|1,Rows|5,*maxlength|1000")]
        public string valores_propiedades
        {
            get { return _valores_propiedades;  }
            set { _valores_propiedades = value; }
        }

    }
}
